//package cn.itcast;
//
//import org.openjdk.jmh.annotations.*;
//
//import java.util.Arrays;
//import java.util.concurrent.FutureTask;
//
///**
// * 对1亿个数求和
// * 单线程
// * 多线程
// */
//@Fork(1)
//@BenchmarkMode(Mode.AverageTime)//测试模式：选择统计平均时间
//@Warmup(iterations=3)//热身次数：3
//@Measurement(iterations=5)//进行5轮测试
//public class MyBenchmark1 {
//    static int[] ARRAY = new int[1000_000_00];
//    static {
//        Arrays.fill(ARRAY, 1);
//    }
//
//    /**
//     * 4个线程每个计算2千5百万个数得和
//     * 最终汇总
//     * @return
//     * @throws Exception
//     */
//    @Benchmark
//    public int c() throws Exception {
//        int[] array = ARRAY;
//        FutureTask<Integer> t1 = new FutureTask<>(()->{
//            int sum = 0;
//            for(int i = 0; i < 250_000_00;i++) {
//                sum += array[0+i];
//            }
//            return sum;
//        });
//        FutureTask<Integer> t2 = new FutureTask<>(()->{
//            int sum = 0;
//            for(int i = 0; i < 250_000_00;i++) {
//                sum += array[250_000_00+i];
//            }
//            return sum;
//        });
//        FutureTask<Integer> t3 = new FutureTask<>(()->{
//            int sum = 0;
//            for(int i = 0; i < 250_000_00;i++) {
//                sum += array[500_000_00+i];
//            }
//            return sum;
//        });
//        FutureTask<Integer> t4 = new FutureTask<>(()->{
//            int sum = 0;
//            for(int i = 0; i < 250_000_00;i++) {
//                sum += array[750_000_00+i];
//            }
//            return sum;
//        });
//        new Thread(t1).start();
//        new Thread(t2).start();
//        new Thread(t3).start();
//        new Thread(t4).start();
//        return t1.get() + t2.get() + t3.get()+ t4.get();
//    }
//
//    /**
//     * 一个线程计算1亿个数的和
//     * @return
//     * @throws Exception
//     */
//    @Benchmark
//    public int d() throws Exception {
//        int[] array = ARRAY;
//        FutureTask<Integer> t1 = new FutureTask<>(()->{
//            int sum = 0;
//            for(int i = 0; i < 1000_000_00;i++) {
//                sum += array[0+i];
//            }
//            return sum;
//        });
//        new Thread(t1).start();
//        return t1.get();
//    }
//}
